<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<title>RoutingError.swift - Slather</title>
<link href="slather.css" media="all" rel="stylesheet">
</head>
<body>
<header><div class="row"><a href="index.html"><img src="logo.jpg" alt="Slather logo"></a></div></header><div class="row"><div id="reports">
<h2 class="cov_title">
<span>Coverage for "RoutingError.swift" : </span><span class="cov_high">98.18%</span>
</h2>
<h4 class="cov_subtitle">(54 of 55 relevant lines covered)</h4>
<h4 class="cov_filepath">RouteComposer/Classes/RoutingError.swift</h4>
<table class="source_code">
<tr class="never">
<td class="num">1</td>
<td class="src"><pre><code class="objc">//</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">2</td>
<td class="src"><pre><code class="objc">// RouteComposer</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">3</td>
<td class="src"><pre><code class="objc">// RoutingError.swift</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">4</td>
<td class="src"><pre><code class="objc">// https://github.com/ekazaev/route-composer</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">5</td>
<td class="src"><pre><code class="objc">//</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">6</td>
<td class="src"><pre><code class="objc">// Created by Eugene Kazaev in 2018-2022.</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">7</td>
<td class="src"><pre><code class="objc">// Distributed under the MIT license.</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">8</td>
<td class="src"><pre><code class="objc">//</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">9</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">10</td>
<td class="src"><pre><code class="objc">import Foundation</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">11</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">12</td>
<td class="src"><pre><code class="objc">/// Routing `Error` representation</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">13</td>
<td class="src"><pre><code class="objc">public enum RoutingError: Error, CustomStringConvertible {</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">14</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">15</td>
<td class="src"><pre><code class="objc">    // MARK: Internal entities</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">16</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">17</td>
<td class="src"><pre><code class="objc">    /// Describes an error happened to the initial view controller</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">18</td>
<td class="src"><pre><code class="objc">    public enum InitialControllerErrorState: CustomStringConvertible {</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">19</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">20</td>
<td class="src"><pre><code class="objc">        /// View controller not found</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">21</td>
<td class="src"><pre><code class="objc">        case notFound</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">22</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">23</td>
<td class="src"><pre><code class="objc">        /// View controller deallocated</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">24</td>
<td class="src"><pre><code class="objc">        case deallocated</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">25</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="covered">
<td class="num">26</td>
<td class="src"><pre><code class="objc">        public var description: String {</code></pre></td>
<td class="coverage">5x</td>
</tr>
<tr class="covered">
<td class="num">27</td>
<td class="src"><pre><code class="objc">            switch self {</code></pre></td>
<td class="coverage">5x</td>
</tr>
<tr class="covered">
<td class="num">28</td>
<td class="src"><pre><code class="objc">            case .deallocated:</code></pre></td>
<td class="coverage">5x</td>
</tr>
<tr class="covered">
<td class="num">29</td>
<td class="src"><pre><code class="objc">                return "Initial controller deallocated"</code></pre></td>
<td class="coverage">2x</td>
</tr>
<tr class="covered">
<td class="num">30</td>
<td class="src"><pre><code class="objc">            case .notFound:</code></pre></td>
<td class="coverage">5x</td>
</tr>
<tr class="covered">
<td class="num">31</td>
<td class="src"><pre><code class="objc">                return "Initial controller not found"</code></pre></td>
<td class="coverage">3x</td>
</tr>
<tr class="covered">
<td class="num">32</td>
<td class="src"><pre><code class="objc">            }</code></pre></td>
<td class="coverage">5x</td>
</tr>
<tr class="covered">
<td class="num">33</td>
<td class="src"><pre><code class="objc">        }</code></pre></td>
<td class="coverage">5x</td>
</tr>
<tr class="never">
<td class="num">34</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">35</td>
<td class="src"><pre><code class="objc">    }</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">36</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">37</td>
<td class="src"><pre><code class="objc">    /// Error context holder</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">38</td>
<td class="src"><pre><code class="objc">    public struct Context: CustomStringConvertible {</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">39</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">40</td>
<td class="src"><pre><code class="objc">        /// Message describing error that happened</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">41</td>
<td class="src"><pre><code class="objc">        public let debugDescription: String</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">42</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">43</td>
<td class="src"><pre><code class="objc">        /// Underlying error if present</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">44</td>
<td class="src"><pre><code class="objc">        public let underlyingError: Error?</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">45</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">46</td>
<td class="src"><pre><code class="objc">        /// Constructor</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="covered">
<td class="num">47</td>
<td class="src"><pre><code class="objc">        public init(_ debugDescription: String, underlyingError: Error? = nil) {</code></pre></td>
<td class="coverage">211x</td>
</tr>
<tr class="covered">
<td class="num">48</td>
<td class="src"><pre><code class="objc">            self.debugDescription = debugDescription</code></pre></td>
<td class="coverage">211x</td>
</tr>
<tr class="covered">
<td class="num">49</td>
<td class="src"><pre><code class="objc">            self.underlyingError = underlyingError</code></pre></td>
<td class="coverage">211x</td>
</tr>
<tr class="covered">
<td class="num">50</td>
<td class="src"><pre><code class="objc">        }</code></pre></td>
<td class="coverage">211x</td>
</tr>
<tr class="never">
<td class="num">51</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="covered">
<td class="num">52</td>
<td class="src"><pre><code class="objc">        public var description: String {</code></pre></td>
<td class="coverage">82x</td>
</tr>
<tr class="covered">
<td class="num">53</td>
<td class="src"><pre><code class="objc">            let errorDescription: String?</code></pre></td>
<td class="coverage">82x</td>
</tr>
<tr class="covered">
<td class="num">54</td>
<td class="src"><pre><code class="objc">            if let underlyingError = underlyingError {</code></pre></td>
<td class="coverage">82x</td>
</tr>
<tr class="covered">
<td class="num">55</td>
<td class="src"><pre><code class="objc">                errorDescription = "\(underlyingError)"</code></pre></td>
<td class="coverage">13x</td>
</tr>
<tr class="covered">
<td class="num">56</td>
<td class="src"><pre><code class="objc">            } else {</code></pre></td>
<td class="coverage">82x</td>
</tr>
<tr class="covered">
<td class="num">57</td>
<td class="src"><pre><code class="objc">                errorDescription = nil</code></pre></td>
<td class="coverage">69x</td>
</tr>
<tr class="covered">
<td class="num">58</td>
<td class="src"><pre><code class="objc">            }</code></pre></td>
<td class="coverage">82x</td>
</tr>
<tr class="covered">
<td class="num">59</td>
<td class="src"><pre><code class="objc">            let descriptionParts = [!debugDescription.isEmpty ? debugDescription : nil, errorDescription].compactMap { $0 }</code></pre></td>
<td class="coverage">164x</td>
</tr>
<tr class="covered">
<td class="num">60</td>
<td class="src"><pre><code class="objc">            guard descriptionParts.isEmpty else {</code></pre></td>
<td class="coverage">82x</td>
</tr>
<tr class="covered">
<td class="num">61</td>
<td class="src"><pre><code class="objc">                return descriptionParts.joined(separator: " -&gt; ")</code></pre></td>
<td class="coverage">81x</td>
</tr>
<tr class="covered">
<td class="num">62</td>
<td class="src"><pre><code class="objc">            }</code></pre></td>
<td class="coverage">81x</td>
</tr>
<tr class="covered">
<td class="num">63</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage">1x</td>
</tr>
<tr class="covered">
<td class="num">64</td>
<td class="src"><pre><code class="objc">            return "No valuable information provided"</code></pre></td>
<td class="coverage">1x</td>
</tr>
<tr class="covered">
<td class="num">65</td>
<td class="src"><pre><code class="objc">        }</code></pre></td>
<td class="coverage">82x</td>
</tr>
<tr class="never">
<td class="num">66</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">67</td>
<td class="src"><pre><code class="objc">    }</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">68</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">69</td>
<td class="src"><pre><code class="objc">    // MARK: Error types</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">70</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">71</td>
<td class="src"><pre><code class="objc">    /// Type mismatch error</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">72</td>
<td class="src"><pre><code class="objc">    case typeMismatch(type: Any.Type, expectedType: Any.Type, RoutingError.Context)</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">73</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">74</td>
<td class="src"><pre><code class="objc">    /// The view controllers stack integration failed</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">75</td>
<td class="src"><pre><code class="objc">    case compositionFailed(RoutingError.Context)</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">76</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">77</td>
<td class="src"><pre><code class="objc">    /// The view controller can not be dismissed. See `RoutingInterceptable.canBeDismissed`.</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">78</td>
<td class="src"><pre><code class="objc">    case cantBeDismissed(RoutingError.Context)</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">79</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">80</td>
<td class="src"><pre><code class="objc">    /// Initial view controller error</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">81</td>
<td class="src"><pre><code class="objc">    case initialController(InitialControllerErrorState, RoutingError.Context)</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">82</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">83</td>
<td class="src"><pre><code class="objc">    /// Message describing error that happened</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">84</td>
<td class="src"><pre><code class="objc">    case generic(RoutingError.Context)</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">85</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">86</td>
<td class="src"><pre><code class="objc">    // MARK: Helper methods</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">87</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="covered">
<td class="num">88</td>
<td class="src"><pre><code class="objc">    public var description: String {</code></pre></td>
<td class="coverage">67x</td>
</tr>
<tr class="covered">
<td class="num">89</td>
<td class="src"><pre><code class="objc">        switch self {</code></pre></td>
<td class="coverage">67x</td>
</tr>
<tr class="covered">
<td class="num">90</td>
<td class="src"><pre><code class="objc">        case let .typeMismatch(type, expectedType, context):</code></pre></td>
<td class="coverage">67x</td>
</tr>
<tr class="covered">
<td class="num">91</td>
<td class="src"><pre><code class="objc">            return "Type Mismatch Error: Type \(String(describing: type)) is not equal to the expected type \(String(describing: expectedType)). " +</code></pre></td>
<td class="coverage">17x</td>
</tr>
<tr class="covered">
<td class="num">92</td>
<td class="src"><pre><code class="objc">                "\(context.description)"</code></pre></td>
<td class="coverage">17x</td>
</tr>
<tr class="covered">
<td class="num">93</td>
<td class="src"><pre><code class="objc">        case let .compositionFailed(context):</code></pre></td>
<td class="coverage">67x</td>
</tr>
<tr class="covered">
<td class="num">94</td>
<td class="src"><pre><code class="objc">            return "Composition Failed Error: \(context.description)"</code></pre></td>
<td class="coverage">16x</td>
</tr>
<tr class="covered">
<td class="num">95</td>
<td class="src"><pre><code class="objc">        case let .initialController(state, context):</code></pre></td>
<td class="coverage">67x</td>
</tr>
<tr class="covered">
<td class="num">96</td>
<td class="src"><pre><code class="objc">            return "Initial Controller Error: \(state). \(context.description)"</code></pre></td>
<td class="coverage">5x</td>
</tr>
<tr class="covered">
<td class="num">97</td>
<td class="src"><pre><code class="objc">        case let .cantBeDismissed(context):</code></pre></td>
<td class="coverage">67x</td>
</tr>
<tr class="covered">
<td class="num">98</td>
<td class="src"><pre><code class="objc">            return "View Controller Can Not Be Dismissed Error: \(context.description)"</code></pre></td>
<td class="coverage">8x</td>
</tr>
<tr class="covered">
<td class="num">99</td>
<td class="src"><pre><code class="objc">        case let .generic(context):</code></pre></td>
<td class="coverage">67x</td>
</tr>
<tr class="covered">
<td class="num">100</td>
<td class="src"><pre><code class="objc">            return "Generic Error: \(context.description)"</code></pre></td>
<td class="coverage">21x</td>
</tr>
<tr class="covered">
<td class="num">101</td>
<td class="src"><pre><code class="objc">        }</code></pre></td>
<td class="coverage">67x</td>
</tr>
<tr class="covered">
<td class="num">102</td>
<td class="src"><pre><code class="objc">    }</code></pre></td>
<td class="coverage">67x</td>
</tr>
<tr class="never">
<td class="num">103</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">104</td>
<td class="src"><pre><code class="objc">    /// Returns `RoutingError.Context` instance</code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="covered">
<td class="num">105</td>
<td class="src"><pre><code class="objc">    public var context: RoutingError.Context {</code></pre></td>
<td class="coverage">5x</td>
</tr>
<tr class="covered">
<td class="num">106</td>
<td class="src"><pre><code class="objc">        switch self {</code></pre></td>
<td class="coverage">5x</td>
</tr>
<tr class="covered">
<td class="num">107</td>
<td class="src"><pre><code class="objc">        case let .typeMismatch(_, _, context):</code></pre></td>
<td class="coverage">5x</td>
</tr>
<tr class="covered">
<td class="num">108</td>
<td class="src"><pre><code class="objc">            return context</code></pre></td>
<td class="coverage">1x</td>
</tr>
<tr class="covered">
<td class="num">109</td>
<td class="src"><pre><code class="objc">        case let .compositionFailed(context):</code></pre></td>
<td class="coverage">5x</td>
</tr>
<tr class="covered">
<td class="num">110</td>
<td class="src"><pre><code class="objc">            return context</code></pre></td>
<td class="coverage">1x</td>
</tr>
<tr class="covered">
<td class="num">111</td>
<td class="src"><pre><code class="objc">        case let .initialController(_, context):</code></pre></td>
<td class="coverage">5x</td>
</tr>
<tr class="covered">
<td class="num">112</td>
<td class="src"><pre><code class="objc">            return context</code></pre></td>
<td class="coverage">1x</td>
</tr>
<tr class="covered">
<td class="num">113</td>
<td class="src"><pre><code class="objc">        case let .cantBeDismissed(context):</code></pre></td>
<td class="coverage">5x</td>
</tr>
<tr class="missed">
<td class="num">114</td>
<td class="src"><pre><code class="objc">            return context</code></pre></td>
<td class="coverage">!</td>
</tr>
<tr class="covered">
<td class="num">115</td>
<td class="src"><pre><code class="objc">        case let .generic(context):</code></pre></td>
<td class="coverage">5x</td>
</tr>
<tr class="covered">
<td class="num">116</td>
<td class="src"><pre><code class="objc">            return context</code></pre></td>
<td class="coverage">2x</td>
</tr>
<tr class="covered">
<td class="num">117</td>
<td class="src"><pre><code class="objc">        }</code></pre></td>
<td class="coverage">5x</td>
</tr>
<tr class="covered">
<td class="num">118</td>
<td class="src"><pre><code class="objc">    }</code></pre></td>
<td class="coverage">5x</td>
</tr>
<tr class="never">
<td class="num">119</td>
<td class="src"><pre><code class="objc"></code></pre></td>
<td class="coverage"></td>
</tr>
<tr class="never">
<td class="num">120</td>
<td class="src"><pre><code class="objc">}</code></pre></td>
<td class="coverage"></td>
</tr>
</table>
</div></div>
<footer><div class="row">
<p><a href="https://github.com/SlatherOrg/slather">Fork me on Github</a></p>
<p>&copy; 2022 Slather</p>
</div></footer><script src="highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script>
</body>
</html>
